/*
 * Team Name: Focus
 * Team Members: Diana Groun, Edward Bassan
 * File Name; cpu.h
 * Description: This file contains the prototype for the cpu.
 */
#ifndef CPU_H_
#define CPU_H_
#include "Register.h"
#include "alu.h"
#include "RegisterFile.h"
#include "registerFile.h"

typedef struct cpu{
        //instance fields.

        RegisterPtr MAR, MDR, PC, IR,SW;
        AluPtr alu;
        RegFilePtr registers;

        //Member Functions.
        int (*displayCpuRegisters)(struct cpu*);

}CpuStr;

typedef CpuStr * CpuPtr;

//Functions
CpuPtr newCpu(void);
int displayCpuRegisters(CpuPtr this);

#endif /* CPU_H_ */
